package com.cyys.modules.mobile;

import com.cyys.modules.core.controller.BaseAction;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@RequestMapping("/api/file")
//@Api(tags = "文件上传接口")
public class UploadAction extends BaseAction {
//    @Autowired
//    private GlobalsConfigurations globalsConfigurations;
//
//    private static Logger logger = LoggerFactory.getLogger(UploadAction.class);
//
//    @Autowired
//    private FileEntryService fileEntryService;
//
//    // 文件的目录名
//    private String dirName = "/images";
//
//    @Value("${cyys.file.uploadMode}")
//    private int uploadMode;
//
//    @PostMapping(value = "/uploadFile")
//    @ApiOperation(value = "文件上传，必须是from形式上传文件，form中包含multipart/form-data流，\n" +
//            "可以是多文件形式,可以通过Ajax方式进行文件上传\n" +
//            "文件访问地址为：http://220.197.219.244/images/files + 文件相对路径")
//    public AjaxJson uploadFile(HttpServletRequest request) throws Exception {
//        Map<String, String> extMap = new HashMap<String, String>();
//        extMap.put("images", globalsConfigurations.getFileImages());
//        extMap.put("medias",  globalsConfigurations.getFileMedias());
//        extMap.put("files",  globalsConfigurations.getFileFiles());
//        // 文件上传路径
//        String basePath = globalsConfigurations.getFileRootPath();
//        // 文件最大长度
//        Long maxSize = globalsConfigurations.getFileMaxsize();
//        AjaxJson aj = new AjaxJson();
//        // long startTime = System.currentTimeMillis();
//        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
//                request.getSession().getServletContext());
//        // 获取内容类型
//        String contentType = request.getContentType();
//        int contentLength = request.getContentLength();
//
//        if (contentType == null || !contentType.startsWith("multipart")) {
//            aj.setSuccess(false);
//            aj.setMsg("请求不包含multipart/form-data流");
//            // errorInfo = "请求不包含multipart/form-data流";
//        } else if (maxSize < contentLength) {
//            aj.setSuccess(false);
//            aj.setMsg("上传文件大小超出文件最大大小");
//            // errorInfo = "上传文件大小超出文件最大大小[" + maxSize + "]";
//        } else if (!multipartResolver.isMultipart(request)) {
//            aj.setSuccess(false);
//            aj.setMsg("文件未选择");
//        } else {
//            // asList(fileType.split(",")).contains(fileExt)
//            // 将request变成多部分request
//            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
//            // 获取multiRequest 中所有的文件名
//            Iterator<String> iter = multiRequest.getFileNames();
//            // 检查扩展名，并获取存储路径
//            while (iter.hasNext()) {
//                MultipartFile file = multiRequest.getFile(iter.next());
//                if (file != null) {
//                    String fileExt = file.getOriginalFilename()
//                            .substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
//                    if (Arrays.<String> asList(extMap.get("images").split(",")).contains(fileExt)) {
//                        dirName = "/images";
//                    } else if (Arrays.<String> asList(extMap.get("medias").split(",")).contains(fileExt)) {
//                        dirName = "/medias";
//                    } else if (Arrays.<String> asList(extMap.get("files").split(",")).contains(fileExt)) {
//                        dirName = "/files";
//                    } else {
//                        aj.setSuccess(false);
//                        aj.setMsg("此扩展名不允许上传。");
//                        break;
//                    }
//                }
//            }
//            List<FileEntry> fileEntryList = new ArrayList<FileEntry>();
//            Date currentDate = new Date();
//            iter = multiRequest.getFileNames();
//            // 上传文件
//            while (iter.hasNext()) {
//                // 一次遍历所有文件
//                MultipartFile file = multiRequest.getFile(iter.next());
//                if (file != null) {
//                    // basePath + dirName + yyyy/MM/dd + newFileName
//                    String fileExt = file.getOriginalFilename()
//                            .substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
//                    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
//                    String newFileName = df.format(currentDate) + "_" + new Random().nextInt(1000) + "." + fileExt;
//                    df = new SimpleDateFormat("yyyy/MM/dd");
//
//                    String fileUrl = dirName + "/" + df.format(currentDate) + "/" + newFileName;
//                    // 上传
//                    switch (uploadMode){
//                        //mode为1时上传至OSS
//                        case 1:{
//                            if (basePath.equals("")) {
//                                basePath = request.getSession().getServletContext().getRealPath("") + "/files";
//                            }
//                            String path = basePath + dirName + "/" + df.format(currentDate);
//                            // System.out.println(path);
//                            FileUpload.createPath(path, newFileName);
//                            OssUtil.upLoadFile(file.getInputStream(),fileUrl.substring(1,fileUrl.length()));
//                        }break;
//                        //mode为2时上传至本地服务器
//                        case 2:{
//                            try {
//                                if (basePath.equals("")) {
//                                    basePath = request.getSession().getServletContext().getRealPath("") + "/files";
//                                }
//                                String path = basePath + dirName + "/" + df.format(currentDate);
//                                // System.out.println(path);
//                                FileUpload.createPath(path, newFileName);
//                                //生成图片
//
//                                file.transferTo(new File(basePath + fileUrl));
//                                // 生成图片缩略图
//                                if (Arrays.<String> asList(extMap.get("images").split(",")).contains(fileExt)) {
//                                    String thumbTargetUrl = FileUtil.getThumbPath(basePath + fileUrl, 1);
//                                    String middleTargetUrl = FileUtil.getThumbPath(basePath + fileUrl, 2);
//                                    String bigTargetUrl = FileUtil.getThumbPath(basePath + fileUrl, 3);
//                                    File targetFile = new File(thumbTargetUrl);
//                                    targetFile.createNewFile();
//                                    targetFile = new File(middleTargetUrl);
//                                    targetFile.createNewFile();
//                                    ImageUtil.resize(basePath + fileUrl, bigTargetUrl, 1920, 1080);
//                                    ImageUtil.resize(basePath + fileUrl, middleTargetUrl, 1200, 800);
//                                    ImageUtil.resize(basePath + fileUrl, thumbTargetUrl, 600, 300);
//                                }
//                            } catch (IllegalStateException e) {
//                                logger.error(e.getMessage());
//                            } catch (IOException e) {
//                                logger.error(e.getMessage());
//                            }
//                        }break;
//
//                        default:{
//                            if (basePath.equals("")) {
//                                basePath = request.getSession().getServletContext().getRealPath("") + "/files";
//                            }
//                            String path = basePath + dirName + "/" + df.format(currentDate);
//                            // System.out.println(path);
//                            FileUpload.createPath(path, newFileName);
//                            OssUtil.upLoadFile(file.getInputStream(),fileUrl.substring(1,fileUrl.length()));
//                        }
//                    }
//
//
//
//
//                    FileEntry fileEntry = new FileEntry();
//                    /*
//                        User user = getUser();
//                        Long userId = null;
//                        if (user != null) {
//                            userId = user.getId();
//                        }
//                    */
//                    if (Arrays.<String> asList(extMap.get("images").split(",")).contains(fileExt)) {
//                        fileEntry.setFileType("1");  //图片形式
//                    }else if(fileExt.equals("docx") || fileExt.equals("doc")){
//                        fileEntry.setFileType("2");  //WORD形式
//                    }else if(fileExt.equals("xlsx") || fileExt.equals("xls")){
//                        fileEntry.setFileType("3");  //Excel形式
//                    }else if(fileExt.equals("pptx") || fileExt.equals("ppt")){
//                        fileEntry.setFileType("4");  //PPT形式
//                    }else if(fileExt.equals("zip") || fileExt.equals("rar")){
//                        fileEntry.setFileType("5");  //ZIP形式
//                    }else {
//                        fileEntry.setFileType("6");  //其他
//                    }
//
//                    //fileEntry.setUserId(userId);
//                    fileEntry.setDateCreate(currentDate);
//                    fileEntry.setFileSize(file.getSize());
//                    fileEntry.setRealFileName(file.getOriginalFilename());
//                    fileEntry.setFileUrl(fileUrl);
//                    fileEntryList.add(fileEntry);
//                }
//            }
//            // 保存文件相关信息到文件列表中
//            fileEntryList = fileEntryService.saveList(fileEntryList);
//            aj.setSuccess(true);
//            aj.setMsg("上传成功");
//            aj.put("fileEntryList", fileEntryList);
//        }
//        return aj;
//    }
}
